package com.javaclimb.filmbuy.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.javaclimb.filmbuy.dao.MessageInfoDao;
import com.javaclimb.filmbuy.entity.MessageInfo;
import com.javaclimb.filmbuy.vo.MessageInfoVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/*
* 在线交流信息service层
* */
@Service
public class MessageInfoService {

    @Resource
    private MessageInfoDao messageInfoDao;

    /**
     * 增加一个在线交流信息
     */
    public MessageInfo add(MessageInfo messageInfo){
       messageInfo.setTime(new SimpleDateFormat("yyyy--MM--dd HH:mm:ss").format(new Date()));
        messageInfoDao.insertSelective(messageInfo);
        return messageInfo;
    }

    /**
     * 根据主键id删除一个在线交流信息
     */
    public void delete(Long id){
        messageInfoDao.deleteByPrimaryKey(id);
    }

    /**
     * 更新一个在线交流信息
     */
    public void update(MessageInfo messageInfo){

        messageInfoDao.updateByPrimaryKeySelective(messageInfo);
    }

    /**
     * 根据主键id查询一个在线交流信息
     */
    public MessageInfo findById(Long id){
        return messageInfoDao.selectByPrimaryKey(id);
    }


    /**
     * 根据在线交流标题模糊查询在线交流信息对象列表，分页查询
     * @param name 在线交流标题，不是必选项
     * @param pageNum 要查询第几页
     * @param pageSize 每页多少条数据
     * @return 在线交流信息列表
     */
    public PageInfo<MessageInfoVo> findPage(String name, Integer pageNum, Integer pageSize){
        PageHelper.startPage(pageNum,pageSize);
        List<MessageInfoVo> byName = messageInfoDao.findByName(name);
        return PageInfo.of(byName);
    }

    /**
     * 查询所有的在线交流，第一层是父id是0，第二层从属于第一层
     */
    public List<MessageInfoVo> findAll(){
        List<MessageInfoVo> all = messageInfoDao.findByParentId(0L);
        for(MessageInfoVo messageInfoVo : all){
            Long id = messageInfoVo.getId();
            List<MessageInfoVo> children = messageInfoDao.findByParentId(id);
            messageInfoVo.setChildren(children);
        }
        return all;
    }

}












